package reentrant;

/*不可重入：线程，执行外层方法已经获取了锁；在方法中再次获取该锁时，就会获取不到，被阻塞。
、、、、、、导致重入锁死
 */
public class UnReentrantLock {
    private boolean isLocked = false;

    public synchronized void lock() throws InterruptedException {
        while (isLocked) { //不用if，而用while，是为了防止假唤醒
            wait(); //使当前线程阻塞
        }
        isLocked = true;
    }

    public synchronized void unlock() {
        isLocked = false;
        notify(); //唤醒一个处于等待状态的线程
    }
}
